ceph纠删原理和配置手册
一、概念和原理
1.1 概念
按照误码控制的不同功能,可分为检错码、纠错码和纠删码等。
检错码仅具备识别错码功能 而无纠正错码功能;
纠错码不仅具备识别错码功能,同时具备纠正错码功能;
纠删码则不仅具备识别错码和纠正错码的功能,而且当错码超过纠正范围时可把无法纠错的信息删除。
1.2 原理
现如今大部分存储设备都是通过raid技术来实现数据保护的,但是raid的缺点也显而易见一般只允许坏一块磁盘,最多允许坏2块,当磁盘数量太多了之后,磁盘的故障率也随之提高,这个时候使用raid技术也满足不了数据安全存储保护的需求了。
纠删是一种数据保护方法,他将数据分割成片段,把冗余数据块扩展,编码,并将其存储在不同的位置,比如磁盘,存储节点或其他的地理位置。纠删原理:用个简单的公式来表示:n=k+m,其中n表示纠删过程中创建的数据或符号的总值,k表示原始数据或符号的值,m表示故障后添加的提供保护的冗余值。举例来说,一个原数据落到存储节点上之前被切分成4片(k值),通过纠删算法纠删成6片(n值),那么纠删值为2(m值),那么。这六片数据中任意四片都可以重建出原来的数据。
二、纠删配置手册
2.1 环境描述
节点IP
主机名
集群角色
OSD个数
192.168.0.31
lqy-1
MON&MDS&OSD
每个节点
一个50G磁盘做SSD
二个100G磁盘做SATA
192.168.0.32
lqy-2
192.168.0.36
lqy-3
2.2 配置步骤
1、初始化集群,查看集群状态,确认为ok状态后在进行下面的操作
2、查看当前的默认策略
# ceph osd erasure-code-profile ls
# ceph osd erasure-code-profile get default
3、创建一个新的名为profile的规则,设置为主机分组
#ceph osd erasure-code-profile set profile k=2 m=1 runleset-failure-domain=host
4、创建一个名为ecpool-1的纠删码存储池,使用上面创建的profile规则
(由于k=2,m=1,总共6个SATA,所以PG设置为256)
# ceph osd pool create ecpool-1 256 256 erasure profile
可以看到创建的存储池规则不是replicate而是erasure
5、创建纠删码的缓存池
# ceph osd pool create ssd 128 128
6、修改当前的crushmap
# ceph osd getcrushmap -o raw_map
# crushtool -d raw_map -o decode_map
# vim decode_map
7、编码并设置crushmap
# crushtool -c decode_map -o crush_map
# ceph osd setcrushmap -i crush_map
查看此时的osd节点树
8、设置缓存池各个参数
将ssd设置成就删池ecpool-1的缓存池
# ceph osd tier add ecpool-1 ssd
设置缓存模式为writeback并让其生效
# ceph osd tier cache-mode ssd writeback
# ceph osd tier set-overlay ecpool-1 ssd
设置命中算法
# ceph osd pool set ssd hit_set_type bloom
# ceph osd pool set ssd hit_set_count 1
# ceph osd pool set ssd hit_set_period 3600
设置缓存池缓存的最大字节数(文件大小,一般设置为SSD的可用空间总和)
# ceph osd pool set ssd target_max_bytes 70000000000
设置缓存脏页比例,达到此比例之后开始回写 (0.4表示这里设置40%,达到40%之后开始往冷池复制数据)
# ceph osd pool set ssd cache_target_dirty_ratio 0.4
设置达到此比例后,开始移除对象 (0.8表示这里设置80%,达到80%之后开始删除数据)
# ceph osd pool set ssd cache_target_full_ratio 0.8
设置最快刷到ecpool-1池的时间(秒),此处表示最少在热池保存600s之后,在开始往冷池刷
# ceph osd pool set ssd cache_min_flush_age 600
设置最快清除ssd池对象时间(秒),即达到1800s之后开始清除ssd里面的对象数据(已经刷到冷池的数据)
# ceph osd pool set ssd cache_min_evict_age 900
设置ecpool-1池使用规则1
# ceph osd pool set ecpool-1 crush_ruleset 1
设置ssd池使用规则2
# ceph osd pool set ssd crush_ruleset 2
将ecpool-1加入mdsmap
# ceph mds add_data_pool ecpool-1
9、挂载fuse客户端,创建缓存目录cache
# fuse-mount -m 192.168.0.31,192.168.0.32,192.168.0.36 /media/
# mkdir /media/cache
# setfattr -n ceph.dir.layout.pool -v ecpool-1 /media/cache/
10、验证是否配置成功
往挂载点写入400M数据,查看是否先写到ssd池
# dd if=/dev/zero of=/media/cache/400M bs=1M count=400
。。。。。
posted on
2016-12-14 14:39
歪歪121
阅读(498)
评论(0)
编辑
收藏
举报
|